#ifndef _GRAPH_H_
#define _GRAPH_H_

#include<vector>
#include<string>
#include<list>
#include<unordered_map>
using namespace std;

struct node
{
    node(const string& name);

// private:
    string name;
    node* next;
};


struct graph
{
    // vertices 顶点
    // edges 边
    graph();
    bool addNode(node* pnode);
    bool delNode(node* pnode);

    bool addEdge(node* n1,node* n2);
    bool delEdge(node* n1,node* n2);

    bool DFS();
    bool BFS();

private:
    vector<node*> vertices;
    
    // unordered_map<string,list<node*>> map;
    
};

// vertices 存储所有的顶点
// map存放顶点对应的list list中存放相连接的顶点

#endif // ! _GRAPH_H_